home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok22.lha / Scroll / Scroll.mod < prev    next >
Text File  |  1993-08-15  |  2KB  |  53 lines

  1. (******************************************************
  2.  *
  3.  * :Program.    Scroll.mod
  4.  * :Author.     Holger Gzella
  5.  * :Address.    Freischöffenweg 12  D-4600 Dortmund 16
  6.  * :Phone.      (0231) 85 16 02
  7.  * :Version.    1.0
  8.  * :Date.       9/7/89  20:51:43
  9.  * :Copyright.  PD
  10.  * :Language.   Modula-2
  11.  * :Translator. M2Amiga 3.2d
  12.  * :Contents.   Procedure to create a scrolltext
  13.  * :Remark.     For Intros Assembler seems to be better,
  14.  * :Remark.     this is to create an "About"-message or
  15.  * :Remark.     something like this. Enjoy!
  16.  * :Remark.     Idea is from an C-program (urgh!) in the
  17.  * :Remark.     AMIGA-Sonderheft 4 by Christian Wolf.
  18.  ******************************************************)
  19.  
  20. IMPLEMENTATION MODULE Scroll;
  21.  
  22. FROM SYSTEM   IMPORT ADR;
  23. FROM Graphics IMPORT ScrollRaster,RastPortPtr,Move,Text,WaitTOF;
  24. FROM Hardware IMPORT ciaa,CiaaPraFlags,CiaaPraFlagSet;
  25.  
  26. (* Prozedur, die den angegebenen Text an angegebener Stelle scrollt, bis
  27.    a) die Anzahl der Wiederholungen erreicht ist
  28.    b) der Betrachter die linke Maustaste gedrückt hat
  29.    c) einer abschaltet oder
  30.    d) die Welt untergeht.
  31. *)
  32.  
  33. PROCEDURE ScrollX(port:RastPortPtr; w,s,r,l,y:INTEGER; Stuff:ARRAY OF CHAR);
  34. VAR p,c: INTEGER;
  35.  
  36.   BEGIN
  37.     p:=0; c:=0;
  38.     REPEAT
  39.       WaitTOF;                                  (* synchronisieren *)
  40.       ScrollRaster(port,s,0,0,y,w-1,y+9);       (* scrollen *)
  41.       Move(port,w-s-p,y+8);                     (* Grafikcursor setzen *)
  42.       IF l<=c THEN c:=0;                        (* alles gescrollt? *)
  43.         IF r>-1 THEN DEC(r); END                (* Wiederholungen -1 *)
  44.       END;
  45.       Text(port,ADR(Stuff[c]),1);               (* 1 Buchstaben zeichnen *)
  46.       p:=p+s;                                   (* Hilfszähler erhöhen *)
  47.       IF p>8-s THEN p:=0; INC(c); END;          (* nächstes Zeichen? *)
  48.     UNTIL NOT (gamePort0 IN ciaa.pra) OR (r=0); (* Abbruchbedingung *)
  49.   END ScrollX;                                  (* Das war's. *)
  50.  
  51. END Scroll.
  52.  
  53.